import { EnumRoutePath } from '@/enum'
import { MenuOption } from 'naive-ui'
import { Component } from 'vue'
import { RouteRecordRaw } from 'vue-router'
import { LoginModuleDict } from '@/common'

export interface RouteMeta {
  /** 路由名称 */
  title?: string
  /** 页面 100% 视高 */
  full?: boolean
  /** 是否作为菜单显示在左侧侧边栏进行跳转 */
  notMenu?: boolean
  /** 菜单和面包屑对应的图标 */
  icon?: Component
  /** 在工作区显示时是否使用缓存，默认不使用 */
  keepAlive?: boolean
}

export type CustomRoute = RouteRecordRaw & { meta: RouteMeta }

export type RoutePathKey = keyof typeof EnumRoutePath

export type GlobalMenuOption = MenuOption & {
  routeName: string
  routePath: string
}

export type LoginModuleType = keyof typeof LoginModuleDict
